package ObjetoBr;

import java.util.Scanner;
import java.util.ArrayList;

public class Automato{

// 	public String reconhecerIdentificador(){
// 
// 		
// 
// 	}

	private enum EstadoIntermediario{
		INICIO, 
		RECONHECENDO_TEXTO,
		ESCAPANDO_TEXTO,

		ERRO
	}


	public static void main(String[] args){
		
		ArrayList<Ficha> fichas = new ArrayList<Ficha>();

		int p_atual=0;
		EstadoIntermediario estado = EstadoIntermediario.INICIO;

		int ficha_inicio=0;
		char c;

// 		String codigo = args[0];

		for (String codigo : args){
			estado = EstadoIntermediario.INICIO;
			p_atual=0;

			while(p_atual < codigo.length()) {
	
				c = codigo.charAt(p_atual);
	
				switch(estado){
					case INICIO:
						if(c == '"'){
							estado = EstadoIntermediario.RECONHECENDO_TEXTO;
							ficha_inicio = p_atual+1;
							break;
						}
	
					/** RECONHECIMENTO DE TEXTO */
					case RECONHECENDO_TEXTO:
						if(c != '"' && c != '\\'){
							break;
						}else if(c == '\\'){ 
							estado = EstadoIntermediario.ESCAPANDO_TEXTO;
							break;
						}else if(c == '"'){
							estado = EstadoIntermediario.INICIO;
							fichas.add(new Ficha(TipoFicha.CONSTANTE_TEXTO, 0, 0 ,0 ,0, codigo.substring(ficha_inicio, p_atual)));
							break;
						}
						break;

					case ESCAPANDO_TEXTO:
						if (c < ' ' && c != '\t') {
							estado = EstadoIntermediario.ERRO;
							break;
						}
	
						estado = EstadoIntermediario.RECONHECENDO_TEXTO;
						break;

					/** RECONHECIMENTO DE OPERADORES ARITIMETICOS **/
							
					/** ESTADO DE ERRO **/
					case ERRO:
						fichas.add(new Ficha(TipoFicha.ERRO_LEXICO, 0, 0 ,0 ,0, codigo.substring(ficha_inicio, p_atual)));
						break;
				}
	
				p_atual++;
			}
		}


		for(Ficha f : fichas){
			
			System.out.println("Reconheceu: "+ f.fragmento+" foi reconhecido como "+ f.tipoFicha );
		}
		
/*
// 		Scanner s = new Scanner(System.in);
		char c;
		String codigo = "Ola_vc";

		c = codigo.charAt(3);
		
		System.out.println(c);	
*/
	}

}